import axios from 'axios';
import type { AxiosInstance } from 'axios';  
// 创建 Axios 实例  
const instance: AxiosInstance = axios.create({
    baseURL: 'http://localhost:9000',
    timeout: 10000
});  
  
// 添加请求拦截器  
instance.interceptors.request.use(  
  config => {  
    // 在请求发送之前做些什么  
    console.log('请求发送前', config);  
    // 例如，你可以在这里添加请求头、身份验证信息等  
    // config.headers['Authorization'] = 'Bearer ' + token;  
    return config;  
  },  
  error => {  
    // 对请求错误做些什么  
    console.error('请求发送失败', error);  
    return Promise.reject(error);  
  }  
);  
  

    
// 添加响应拦截器  
instance.interceptors.response.use(  
  response => {  
    // 对响应数据做点什么  
    console.log('响应成功', response);  
      
    // 假设我们想要在每个响应中添加一个自定义的 timestamp  
    response.data.timestamp = Date.now();  
  
    // 返回处理后的响应对象  
    return response.data;  
  },  
  error => {  
    // 对响应错误做点什么  
    if (error.response) {  
      // 请求已发出，但服务器响应的状态码不在 2xx 范围内  
      console.error('服务器响应错误', error.response.data);  
      console.error('状态码', error.response.status);  
      console.error('响应头', error.response.headers);  
  
      // 根据不同的状态码进行不同的错误处理  
      if (error.response.status === 401) {  
        // 未授权，可能需要重新登录  
        // ... 重新登录逻辑  
      } else if (error.response.status === 404) {  
        // 资源未找到  
        // ... 资源未找到处理逻辑  
      }  
  
      // 你可以选择修改错误对象，然后将其抛出，以便后续的 catch 能够处理  
      // throw new Error('自定义错误信息');  
  
      // 或者直接返回一个 rejected Promise，携带你想要的错误信息  
      return Promise.reject(error.response.data);  
    } else if (error.request) {  
      // 请求已发出，但没有收到响应  
      console.error('请求发出但没有收到响应', error.request);  
    } else {  
      // 发生错误，请求未成功发出  
      console.error('请求发生错误', error.message);  
    }  
  
    // 对于其他类型的错误，你可以选择直接抛出  
    return Promise.reject(error);  
  }  
);  

export default instance;